package interfaceGrafica;

import negocios.*;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.util.ArrayList;
import java.util.Collections;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

@SuppressWarnings("serial")
public class PainelEasy extends PainelJogo {

	protected Treinamento treinamento;
	protected String jogador;

	protected JLabel quadro1;
	protected JLabel quadro2;
	protected JLabel quadro3;

	protected JLabel level;
	protected JLabel player;

	protected JButton show;
	protected ImageIcon showImagem1;
	protected ImageIcon showImagem2;
	protected ImageIcon showImagem3;

	public PainelEasy(Janela janela, MenuPrincipal menuPrincipal,
			Treinamento treinamento, String jogador) {
		super(janela, menuPrincipal);

		this.treinamento = treinamento;
		this.jogador = jogador;

		showImagem1 = new ImageIcon(
				"Data\\Imagens\\TreinamentoDesafio\\showImagem1.png");
		showImagem2 = new ImageIcon(
				"Data\\Imagens\\TreinamentoDesafio\\showImagem2.png");
		showImagem3 = new ImageIcon(
				"Data\\Imagens\\TreinamentoDesafio\\showImagem3.png");

		this.backgroundImagem = new ImageIcon(
				"Data\\Imagens\\TreinamentoDesafio\\background.png");
		this.background.setIcon(backgroundImagem);

		quadro1 = new JLabel();
		inicializarQuadro(this, quadro1, quadroImagem, 16, 139,
				quadroImagem.getIconWidth(), quadroImagem.getIconHeight());
		quadro1.addMouseListener(new java.awt.event.MouseAdapter() {
			public void mousePressed(java.awt.event.MouseEvent evt) {
				mousePressionar(quadro1);
			}

			public void mouseReleased(MouseEvent evt) {
				mouseSoltar(quadro1);
			}
		});
		quadro1.addMouseMotionListener(new MouseMotionAdapter() {
			public void mouseDragged(MouseEvent evt) {
				mouseArrastar(quadro1, evt);
			}
		});
		quadro2 = new JLabel();
		inicializarQuadro(this, quadro2, quadroImagem, 148, 139,
				quadroImagem.getIconWidth(), quadroImagem.getIconHeight());
		quadro2.addMouseListener(new java.awt.event.MouseAdapter() {
			public void mousePressed(java.awt.event.MouseEvent evt) {
				mousePressionar(quadro2);
			}

			public void mouseReleased(MouseEvent evt) {
				mouseSoltar(quadro2);
			}
		});
		quadro2.addMouseMotionListener(new MouseMotionAdapter() {
			public void mouseDragged(MouseEvent evt) {
				mouseArrastar(quadro2, evt);
			}
		});

		quadro3 = new JLabel();
		inicializarQuadro(this, quadro3, quadroImagem, 280, 139,
				quadroImagem.getIconWidth(), quadroImagem.getIconHeight());
		quadro3.addMouseListener(new java.awt.event.MouseAdapter() {
			public void mousePressed(java.awt.event.MouseEvent evt) {
				mousePressionar(quadro3);
			}

			public void mouseReleased(MouseEvent evt) {
				mouseSoltar(quadro3);
			}
		});
		quadro3.addMouseMotionListener(new MouseMotionAdapter() {
			public void mouseDragged(MouseEvent evt) {
				mouseArrastar(quadro3, evt);
			}
		});

		this.level = new JLabel();
		this.level.setText("Easy");
		this.level.setBounds(157, 547, 242, 41);
		this.level.setFont(new Font("Arial", 1, 36));
		super.add(level, JLayeredPane.PALETTE_LAYER);

		this.player = new JLabel();
		this.player.setHorizontalAlignment(SwingConstants.CENTER);
		this.player.setVerticalAlignment(SwingConstants.CENTER);
		this.player.setText(jogador);
		this.player.setBounds(418, 532, 263, 30);
		this.player.setFont(new Font("Arial", 1, 24));
		super.add(player, JLayeredPane.PALETTE_LAYER);

		clear = new JButton();
		MenuPrincipal.inicializarBotao(this, clear, clearImagem1, clearImagem2,
				clearImagem3, 468, 213, 70, 85);
		clear.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent me) {
				mouseClicar(clear, 1);
			}
		});

		confirm = new JButton();
		MenuPrincipal.inicializarBotao(this, confirm, confirmImagem1,
				confirmImagem2, confirmImagem3, 537, 213, 70, 85);
		confirm.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent me) {
				mouseClicar(confirm, 2);
			}
		});

		show = new JButton();
		MenuPrincipal.inicializarBotao(this, show, showImagem1, showImagem2,
				showImagem3, 606, 213, 70, 85);
		show.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent me) {
				mouseClicar(show, 3);
			}
		});

		next = new JButton();
		MenuPrincipal.inicializarBotao(this, next, nextImagem1, nextImagem2,
				nextImagem3, 674, 213, 70, 85);
		next.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent me) {
				mouseClicar(next, 4);
			}
		});

		home = new JButton();
		MenuPrincipal.inicializarBotao(this, home, homeImagem1, homeImagem2,
				homeImagem3, 674, 503, 70, 85);
		home.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent me) {
				mouseClicar(home, 5);
			}
		});

		exit = new JButton();
		MenuPrincipal.inicializarBotao(this, exit, exitImagem1, exitImagem2,
				exitImagem3, 725, 503, 70, 85);
		exit.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent me) {
				mouseClicar(exit, 6);
			}
		});

		this.translation = new JTextField();
		this.translation.setHorizontalAlignment(SwingConstants.CENTER);
		this.translation.setEditable(false);
		this.translation.setBorder(null);
		this.translation.setFont(new Font("Arial", 1, 24));
		this.translation.setBounds(17, 58, 382, 66);
		super.add(translation, JLayeredPane.PALETTE_LAYER);
	}

	private void mouseClicar(JButton botao, int escolha) {
		if (!botao.isEnabled())
			return;
		switch (escolha) {
		case 1:
			this.drop1.setText("");
			this.drop2.setText("");
			this.drop3.setText("");
			break;

		case 2:
			int acertos;
			treinamento.confirmarJogada(drop1.getText(), drop2.getText(),
					drop3.getText());
			acertos = treinamento.getGerenciadorDeComparacao().compararVerbos(
					treinamento.getVerboCerto());
			if (acertos == 3) {
				new Popup(treinamento, this, true, drop1, drop2, drop3);
			} else {
				new Popup(treinamento, this, false, drop1, drop2, drop3);
			}
			break;

		case 3:
			treinamento.solucionarJogada();
			drop1.setText(treinamento.getVerboCerto().getInfinitive());
			drop2.setText(treinamento.getVerboCerto().getSimplePast());
			drop3.setText(treinamento.getVerboCerto().getPastParticiple());
			break;

		case 4:
			this.drop1.setText("");
			this.drop2.setText("");
			this.drop3.setText("");
			treinamento.proximaJogada();
			iniciarJogada();
			break;

		case 5:
			janela.setContentPane(menuPrincipal);
			janela.pack();
			break;

		case 6:
			System.exit(0);
			break;

		default:

			break;
		}
	}

	public void iniciarJogada() {
		this.translation.setText(treinamento.getVerboCerto().getTraducao());
		ArrayList<String> lista = new ArrayList<String>();
		lista.add(treinamento.getVerboCerto().getInfinitive());
		lista.add(treinamento.getVerboErrado1().getInfinitive());
		lista.add(treinamento.getVerboErrado2().getInfinitive());
		Collections.shuffle(lista);
		quadro1.setText(lista.get(0));
		quadro2.setText(lista.get(1));
		quadro3.setText(lista.get(2));
	}
}